﻿using System;
using System.Timers;

namespace Learn_event
{
    class Program
    {
        static void Main(string[] args)
        {
            // 事件的拥有者  event source
            // 事件成员      event
            // 时间的响应者  event subscriber
            // 事件处理器    event handler  ------- callback
            // 事件订阅----把事件处理器与事件关联在一起，本质上是一种以委托类型为基础的“约定”

            Timer timer = new Timer();
            timer.Interval = 1000;

            Boy boy = new Boy();
            Girl girl = new Girl();
            timer.Elapsed += boy.Action;  // Elapsed事件是System.Timers.Timer类中的一个事件，计时器触发时，会通知订阅的事件处理方法
            timer.Elapsed += girl.Action;
            timer.Start();
            Console.ReadLine();
        }
    }

    class Boy
    {
        internal void Action(object sender, ElapsedEventArgs e)
        {
            Console.WriteLine("Jump!");
        }
    }

    class Girl
    {
        internal void Action(object sender, ElapsedEventArgs e)
        {
            Console.WriteLine("Dance!");
        }
    }
}
